package com.agritech.machine;

import com.agritech.environment.EnvironmentData;
import com.agritech.observer.EnvironmentObserver;

/**
 * 收割机观察者类
 * 实现环境观察者接口，根据环境数据调整收割机的工作模式
 */
public class HarvesterObserver implements EnvironmentObserver {

    @Override
    public String getObserverName() {
        return "收割机观察者 (" + harvester.getId() + ")";
    }
    private Harvester harvester;
    
    public HarvesterObserver(Harvester harvester) {
        this.harvester = harvester;
    }
    
    @Override
    public void update(EnvironmentData data) {
        System.out.println("收割机 " + harvester.getId() + " 收到环境数据更新:");
        
        // 根据环境数据调整收割机工作模式
        if (data.getWindSpeed() > 8.0) {
            System.out.println("检测到强风 (" + data.getWindSpeed() + "m/s)，降低收割高度以减少风力影响");
            harvester.adjustCuttingHeight(Math.max(5.0, harvester.getCuttingHeight() - 2.0));
        }
        
        if (data.getHumidity() > 85) {
            System.out.println("检测到空气湿度高 (" + data.getHumidity() + "%)，可能影响收获质量，调整收割速度");
            // 假设收割机有调整速度的方法
            System.out.println("收割机降低工作速度，确保收获质量");
        }
        
        if (data.getSoilMoisture() > 75) {
            System.out.println("检测到土壤湿度高 (" + data.getSoilMoisture() + "%)，增加切割高度避免泥土混入");
            harvester.adjustCuttingHeight(harvester.getCuttingHeight() + 1.0);
        }
    }
}